// 导入axios
import axios from 'axios'
import store from '@/store'
import { Message } from 'element-ui'
import router from '@/router'
// 创建请求副本
const _axios = axios.create({
  // baseURL: 'http://119.91.150.211:3000/api'
  // baseURL: 'http://localhost:3000/api'
  baseURL: process.env.VUE_APP_URL
})
// 请求拦截
_axios.interceptors.request.use(
  (config) => {
    // 实际开发有两种接口情况
    // 1、接口不需要加token加了没事
    // 那就统一加token：config.headers.Authorization=''
    // 2、接口不需要token加了报错
    // 解决方式：
    // 不需要加的，在接口属性里可以加一个特别的字段在请求拦截识别后处理
    if (!config.noToken) {
      config.headers.Authorization = `Bearer ${store.state.user.token}`
    }
    return config
  },
  (error) => {
    return Promise.reject(error)
  }
)
// 响应拦截
_axios.interceptors.response.use(
  (res) => {
    // 接口状态码以2开头的走res
    if (res.data.success) {
      return res.data
    } else {
      Message.error(res.data.message)
      return Promise.reject(res.data.message)
    }
  },
  (error) => {
    // 不是2开头的报错
    // console.dir(error)
    // 如果token超时
    // 1、删除token、2、删除用户信息、3、提示登录超时、4、退回登录页
    if (error.response.status === 401) {
      // 通知user模块 1、删除token、2、删除用户信息
      store.commit('user/loginOut')
      Message.error('登录超时，请重新登录')
      router.push('/login?redirect=' + location.href.split('#')[1])
    }
    return Promise.reject(error)
  }
)
// 暴露接口
export default _axios
